Generally speaking, most users of personal computers or similar devices obtain additional computer software to run on their devices by purchasing this software in various retail outlets or by obtaining this additional software through the mail. In both situations, a "shrink-wrap" material encases the software product and a license agreement is implied by the removal of the shrink wrap material in an endeavor to protect the licensor of the product from unauthorized copying and use of the product by the licensee/purchaser. This method of doing business has proved to be inadequate for both the licensee and the licensor. For example, the licensee is not given an opportunity to initially operate the software program to determine whether this program would suit the licensee's needs. Additionally, from the licensor's point of view, identification of the licensee and a means of controlling or monitoring the use of the program by the licensee are not provided by this technique.
Software program protection schemes have been disclosed in U.S. Pat. No. 4,446,519, issued to Thomas, which involve including a programmed Go/No Go Test within the program to confirm the presence of a hardware or firmware security device installed on the computer to which the software is licensed. This technique is intended to ensure that copies of the program will not be utilized without the physical security device, which is much more difficult to duplicate than the software. Such techniques are easily defeated, however by discovering the correct coded response and providing it through a slight modification to the program. Once defeated, unlimited, defeated copies may be provided and distributed.
U.S. Pat. No. 4,740,890, issued to William, teaches the use of a central (remote) computer to provide unlocking codes or validation codes derived from master lists or algorithms inaccessible to the unscrupulous programmer who may attempt to derive the correct codes. However, the methods taught are easily detected by intercepting the transmitted code, by programming around the test, or by analyzing the program with a debugger program to inspect for the presence of a code which will allow execution of the program. Once the test is defeated, unlimited copies of the operable program may be produced and distributed.
Additionally, protection schemes for valuable computer programs have been taught which involve invalidating the most valuable algorithms, and only restoring such valuable algorithms by running the invalidated program in a processor while simultaneously running a restoration algorithm in a physically separate and protected processor, the valid result being obtained by the intercommunication of the two processes, which are described in U.S. Pat. No. 4,649,510, issued to Schmidt. Such techniques are dependent upon the physical protection of the restoration algorithm and could easily be defeated by an unscrupulous programmer if the physical security were breached. Therefore, such a scheme is impractical in a mass market where physical security of the restoration storage media cannot be maintained.
Consequently, an economical method for distributing software to a mass market while protecting the software from abuse by anonymous licensees is warranted. Furthermore, a method and system for allowing a potential purchaser/licensee to test a software program prior to purchasing the product is needed. Still further, a method for distributing enhancements, and updates to registered license is desirable.